/**
 * 
 */

	
//	window.rangy = require(['rangy-core']);
//	console.log('rangy-core',window.rangy);


define([ 'angular'
//         ,'angularAnimate'
//         ,'ocLazyLoad'
//         ,'angularLocale'
         //插件
         ,'uiBootstrap'
//       ,'angular-strap'
//         ,'angular-froala'
//         ,'textAngular'
//         ,'angular-ueditor'
//         ,'uiTinymce'
	
//		,'angularSanitize'
//         ,'ngWYSIWYG'

         ,'BizData'
         ,'services'
         ,'apiservices'
         ,'treeView'
         ,'directives'
//         ,'u2Echarts'
         ,'filters'
         ,'controllers'
         
         //首页
//         ,'appcenter-controllers' 
         //通用功能模块控制器文件集合
//         ,'common-controllers'
         //公共基础数据管理模块控制器文件集合
//         ,'baseinfo-controllers'
         //客户管理模块控制器文件集合
//         ,'customer-controllers'
         //物流模块级控制器
//         ,'shipper-controllers'
         //库存管理模块控制器文件集合
//         ,'inventory-controllers'
         //采购管理模块级控制器
//         ,'stock-controllers'
         //销售管理模块控制器文件集合
//         ,'sale-controllers'
         //销售管理模块控制器文件集合
//         ,'plan-controllers'
         //供应商管理模块控制器文件集合
//         ,'provider-controllers'
         //质量管理模块级控制器
//         ,"quality-controllers"
         //产品数据管理模块级控制器
//         ,'product-controllers'
         //工单/委外管理模块级控制器
//         ,'work-controllers'
         //生产管理模块级控制器
//         ,'mes-controllers'
         //应收应付管理模块级控制器
//         ,'invoice-controllers'
         //固定资产管理模块级控制器
//         ,'assets-controllers'
       
         
         
         //以下不是angular模块的引用
//         ,'rangy-selectionsaverestore'
//         ,'rangy-core'
         
         
         ], function(angular) {
	
	
	'use strict';
	
//	window.rangy = require('rangy-core');
//	console.log('rangy-core',window.rangy);
	
	var app = angular.module('startModule', [ 
//                                    'ngAnimate',
//                                    ,'oc.lazyLoad'
//	                                ,'ngLocale'
									//插件
                                    ,'ui.bootstrap'
//									,'mgcrea.ngStrap' 
//                                    ,'froala'
//                                    ,'textAngular'
//                                    ,'ng.ueditor'
//                                    ,'ui.tinymce'
									
//									,'ngSanitize'
//                                    ,'ngWYSIWYG'

                                    
                                    ,'app.BizData'
                                    ,'app.services'
                                    ,'app.apiservices'
                                    ,'app.treeView'
                                     ,'app.directives'
//                                     ,'app.echarts'
                                     ,'app.filters'
                                     ,'app.controllers'

                                     //首页
//                                     ,'appcenter.controllers'
                                     //通用功能模块
//                                     ,'common.controllers'
                                     //公共基础数据管理模块
//                                     ,'baseinfo.controllers'
                                     //客户管理模块
//                                     ,'customer.controllers'
                                     //物流模块级控制器
//                                     ,'shipper.controllers'
                                     //库存管理模块
//                                     ,'inventory.controllers'
                                     //采购管理模块级控制器
//                                     ,'purchase.controllers'
                                     //销售管理模块
//                                     ,'sale.controllers'
                                     //销售管理模块
//                                     ,'plan.controllers'
                                     //供应商管理模块
//                                     ,'provider.controllers'
                                     //质量管理模块级控制器
//                                     ,"quality.controllers"
                                     //产品数据管理模块级控制器
//                                     ,'product.controllers'
                                     //工单/委外管理模块级控制器
//                                     ,'work.controllers'
                                     //生产管理模块级控制器
//                                     ,'manufact..controllers'
                                     //应收应付管理模块级控制器
//                                     ,'invoice.controllers'
                                     //固定资产管理模块级控制器
//                                     ,'assets.controllers'
                                     

                                     ]);
	
	//floara专用
//	app.value('froalaConfig', {
//        toolbarInline: false,
//        placeholderText: 'Enter Text Here'
//    });
	//floara专用
	
	app.constant('OssEndpoint', {
		imgEndpointUrl: 'http://www.iune.cn'
		,REPORT_URL: '****'
	});
	
	//监听ng-repeat完成的指令，然后，在我们需要监控的地方，加上该directive:
	app.directive('onFinishRenderFilters', ['$timeout', function ($timeout) {
	    return {
	        restrict: 'A',
	        link: function(scope, element, attr) {
	            if (scope.$last === true) {
	                $timeout(function() {
	                    scope.$emit('ngRepeatFinished');
	                });
	            }
	        }
	    };
	}])
	
	app.run(
			  ['$rootScope'/*, '$state', '$stateParams'*/, 'OssEndpoint', 
			    function ($rootScope/*, $state, $stateParams*/, OssEndpoint) {

			    // It's very handy to add references to $state and $stateParams to the $rootScope
			    // so that you can access them from any scope within your applications.For example,
			    // <li ng-class="{ active: $state.includes('contacts.list') }"> will set the <li>
			    // to active whenever 'contacts.list' or one of its decendents is active.
//			    $rootScope.$state = $state;
//			    $rootScope.$stateParams = $stateParams;
						    
				//头部文件菜单的点击状态更改//////////////////////////////////////////////////
			    $rootScope.navActive=function(){
					//获取请求路径
					//获取当前网址，如： http://localhost:8083/uimcardprj/share/meun.jsp
					$rootScope.curWwwPath=window.document.location.href;
					
				    //获取主机地址之后的目录，如： uimcardprj/share/meun.jsp
					$rootScope.pathName=window.document.location.pathname;
					$rootScope.pos=$rootScope.curWwwPath.indexOf($rootScope.pathName);
				    //获取主机地址，如： http://localhost:8083
					$rootScope.localhostPath=$rootScope.curWwwPath.substring(0,$rootScope.pos);
				    //获取带"/"的项目名，如：/uimcardprj
//					$rootScope.projectName=$rootScope.pathName.substring(0,$rootScope.pathName.substr(1).indexOf('/')+1);
					
//					console.log('$rootScope.curWwwPath-->>',$rootScope.curWwwPath);
//					console.log('$rootScope.pathName-->>',$rootScope.pathName);
//					console.log('$rootScope.localhostPath-->>',$rootScope.localhostPath);
//					console.log('$rootScope.pos-->>',$rootScope.pos);
//					console.log('$rootScope.projectName-->>',$rootScope.projectName);
					
				};
				
				//$rootScope.navActive();
				

				/////////////////单据设置/////////////////////////////////
			    //编码类型
			    $rootScope.dataCodeType = [
		            {value:'DT',label:'日期型'}
		            ,{value:'NB',label:'流水号'}
		            ];
			    //编码长度
			    $rootScope.dataCodeCount = [10,15];
			    //编码类型
			    $rootScope.dataCostingCode = [
		            {value:'S',label:'S.成本来源'}
		            ,{value:'V',label:'V.成本赋值'}
		            ,{value:'N',label:'N.无影响'}
		            ];
			    //收入/支出
			    $rootScope.dataRevOpay = [
		            {value:'I',label:'I.收入'}
		            ,{value:'O',label:'O.支出'}
		            ,{value:'-',label:'-.调拨'}
		            ,{value:'9',label:'9.其他'}
		            ];
			    //蓝字/红字
			    $rootScope.dataDirection = [
		            {value:1,label:'1.蓝字'}
		            ,{value:-1,label:'-1.红字'}
		            ];

			    //审签方式
			    $rootScope.dataFlowType = [
		            {value:0,label:'0:不送审自动审核'}
		            ,{value:1,label:'1:非工作流审签'}
		            ,{value:2,label:'2:自由工作流审签'}
		            ,{value:3,label:'3:工作流审签'}
		            ];
			    ///////////////////////////////////////////////////////////
			    
			    //是否前后端分离项目：0：否，1：是
			    $rootScope.separation = 0;
				if($rootScope.separation==0){
					$rootScope.viewprefix='';
					$rootScope.viewsuffix='';
					$rootScope.projectName='/erp01';//项目名称为空时使用，在eclipse中将项目名称设置"/"
//					$rootScope.projectName='';//项目名称为空时使用，在eclipse中将项目名称设置"/"
					$rootScope.serviceName = '/erp01';//数据服务接入点
				}else{
					$rootScope.viewprefix='/appcenter/templates';
					$rootScope.viewsuffix='.html';
					$rootScope.projectName='/u2-erp-web';//项目名称为空时使用，在eclipse中将项目名称设置"/"
					// $rootScope.projectName='/erp02';//项目名称为空时使用，在eclipse中将项目名称设置"/"
					$rootScope.serviceName = 'http://127.0.0.1:80/erp01';//数据服务接入点
					// $rootScope.serviceName = 'http://www.iune.cn:8088/erp01';//数据服务接入点
					// $rootScope.serviceName = 'https://www.iune.cn/erp01';//数据服务接入点
				}
				
				$rootScope.projectName='';//项目名称为空时使用，在eclipse中将项目名称设置"/"
				$rootScope.serviceName='';
				
				$rootScope.getProjectName = function(){
					return $rootScope.projectName;
				}
				
				$rootScope.getServiceName = function(){
					return $rootScope.serviceName;
				}
				
				  
				$rootScope.loadingStartup = function() {
					$("#loadingModal").modal('show');
					//setTimeout('shutdown()', 5000);
					setTimeout(function(){
						$rootScope.loadingShutdown();
					}, 5000);
				}

				$rootScope.loadingShutdown = function() {
					$("#loadingModal").modal('hide');
				}
				
				$rootScope.isJSON = function(str) {
				    if (typeof str == 'string') {
				        try {
				            var obj=JSON.parse(str);
				            if(typeof obj == 'object' && obj ){
				                return true;
				            }else{
				                return false;
				            }

				        } catch(e) {
				            console.log('error：'+str+'!!!'+e);
				            return false;
				        }
				    }
				    
				}
  
	    		
	    		//BizData统一处理ajax错误
				$rootScope.ajaxError = function(XMLHttpRequest, textStatus, errorThrown){
		           	console.log('ajax.error.XMLHttpRequest-->>',XMLHttpRequest);
		        	console.log('ajax.error.textStatus-->>',textStatus);
		        	console.log('ajax.error.errorThrown-->>',errorThrown);
		            //通常情况下textStatus和errorThrown只有其中一个包含信息
		            //this;   //调用本次ajax请求时传递的options参数
		           	if(XMLHttpRequest.readyState==0 && XMLHttpRequest.status==0){
		           		alert("ajax调用失败！请检查服务器是否启动，或者网络连接是否存在问题！");
		           	}else if(XMLHttpRequest.readyState==4 && XMLHttpRequest.status==500){
		           		//Internal Server Error
		           		alert("ajax调用失败！服务内部错误，需要软件供应商解决！");
		           	}else{
		            	alert("ajax调用失败！"+"readyState:"+XMLHttpRequest.readyState+",status:"+XMLHttpRequest.status);
		           	}
	    		};
	    		$rootScope.ajaxComplete = function(XMLHttpRequest, textStatus){
//		           	console.log('ajax.complete.XMLHttpRequest-->>',XMLHttpRequest);
		        	//XMLHttpRequest.responseJSON:请求成功：json数据，停止服务器：undefined，无权限时：没有出现这个项目
		        	//XMLHttpRequest.redyState:请求成功：4，停止服务器：0，无权限时：4
		        	//XMLHttpRequest.status:请求成功：200，停止服务器：0，无权限时：200
		        	//XMLHttpRequest.statusText:请求成功："OK"，停止服务器："error"，无权限时："OK"
//		        	console.log('ajax.complete.textStatus-->>',textStatus);
		        	//textStatus:请求成功：success,停止服务器：error，无权限时：parsererror（由于要求返回json（dataType），但返回的是html）
		            //this;    //调用本次ajax请求时传递的options参数
		        	if(XMLHttpRequest.responseJSON && XMLHttpRequest.responseJSON.code){
		            	if(XMLHttpRequest.responseJSON.code==-999){
		            		//未登录
		            		//alert(XMLHttpRequest.responseJSON.msg);
		            		window.location.href = $rootScope.getProjectName() + "/requestServerCode";
		            	}
		            	if(XMLHttpRequest.responseJSON.code==-998){
		            		//未授权
		            		alert(XMLHttpRequest.responseJSON.msg);
		            	}
		        	}
	    		};
	    		
				//设置ajax全局请求token（专为调用资源服务器的公共API而设置(apiservices.js)，会增加流量损耗，待处理）
				$.ajaxSetup({
					beforeSend: function (evt, request) {
//						$.LoadingOverlay("show");
						//下面增加token是为了调用资源服务器的api使用
						//var access_token = 'Bearer ' + localStorage.getItem('token');
						//evt.setRequestHeader("access_token", access_token);
					},error: function(XMLHttpRequest, textStatus, errorThrown){
	    		    	$rootScope.ajaxError(XMLHttpRequest, textStatus, errorThrown);
	                },complete:function(XMLHttpRequest, textStatus){
//						$.LoadingOverlay("hide");
	    		    	$rootScope.ajaxComplete(XMLHttpRequest, textStatus);
	                 }
				});	
				
	    		//解析图片
	    	    $rootScope.filePathInit = function(row){
//	    	    	console.log('row-->',row);
	    	    	var imagesArray = angular.fromJson(row.images.value);
//	    	    	var imagesArray = angular.fromJson(row.images);
//	    	    	console.log('imagesArray-->',imagesArray);
//	    	    	console.log('$scope.filePath-->',$scope.filePath);
	    	    	return $rootScope.imagesUrl(imagesArray);
	    	    };
	    	    
			    $rootScope.imagesUrl = function(imagesArray){
//			    	console.log('imagesArray-->',imagesArray);
	    	    	if(imagesArray!=null){
	    	    		var filePath=OssEndpoint.imgEndpointUrl+'/'+imagesArray[0].groupName+'/'+imagesArray[0].remoteFileName;
	    	    	}else{
	    	    		var filePath='';
	    	    	}
			//    	console.log('$scope.filePath-->',$scope.filePath);
			    	return filePath;
			    };
			    //截取最后一个‘/’后面的字符串
			    $rootScope.getLastString = function(str){
			    	if(str){
			    		return str.substring(str.lastIndexOf('/')+1,str.length);
			    	}else{
			    		return null;
			    	}
			    };
			    
			    //获取当前窗口自定义参数
			    $rootScope.getWinParams = function(winid){
					for(var i=0;i<$rootScope.wins.length;i++){
						if($rootScope.wins[i].winid===winid){
							return $rootScope.wins[i].winParams
						}
					}
			    };
				
				//提示信息
				/////////////////////////////////////////////////////////////////////////////////////////////
				$rootScope.alerts = [
//	    	                     		                 { type: 'danger', msg: 'Oh snap! Change a few things up and try submitting again.' },
//	    	                     		                 { type: 'success', msg: 'Well done! You successfully read this important alert message.' }
				               ];

				$rootScope.addAlert = function(type,message) {
					$rootScope.alerts.push({type: type, msg: message});
					//定位globalAlert
					var y = $(window).height() - 60*$rootScope.alerts.length;
					$('#globalAlert').css('top',y);

				};

				$rootScope.closeAlert = function(index) {
					$rootScope.alerts.splice(index, 1);
				};
				/////////////////////////////////////////////////////////////////////////////////////////////
				$rootScope.GetQueryString = function(name) {
	    		    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	    		    var r = window.location.search.substr(1).match(reg);
	    		    if (r != null) return unescape(r[2]); 
	    		    return null;
	    		}
	    		
	    		//从地址栏获取token
	    		$rootScope.getAccessToken = function() {
	    			return $rootScope.GetQueryString('access_token');
	    		}
	    		
			    }
			  ]
		);
				
	/*
	function configure($routeProvider, $locationProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) {
        app.registerController = $controllerProvider.register;
        app.registerDirective = $compileProvider.directive;
        app.registerFilter = $filterProvider.register;
        app.registerFactory = $provide.factory;
        app.registerService = $provide.service;
    }	

    configure.$inject = ['$routeProvider', '$locationProvider', '$controllerProvider', '$compileProvider', '$filterProvider', '$provide'];
	
	app.config(configure);
	*/
	
	return app;
	
});
